package jzqb.dao;

import jzqb.bo.NoticeBo;
import jzqb.po.NoticePo;
import jzqb.vo.NoticeVo;

import java.util.List;

/**
 * Description:
 *
 * @author BaiGe
 * @date: 2021/4/7 14:29
 * @Version 1.0
 */
public interface INoticeDao {

    /**
     * 展示通知公告-集合
     *
     * @return
     */
    List<NoticeVo> showNoticeList(NoticeBo noticeBo);

    /**
     * 展示通知公告-总条数
     *
     * @return
     */
    long showNoticeCount(NoticeBo noticeBo);

    /**
     * 新建通知公告
     *
     * @param noticePo
     * @return
     */
    Boolean insertNotice(NoticePo noticePo);

    /**
     * 根据id删除通知公告
     *
     * @param id
     * @return
     */
    Boolean delNotice(Integer id);

    /**
     * 修改通知公告
     *
     * @param noticePo 通知公告实体
     * @return 成功|失败
     */
    Boolean updateNotice(NoticePo noticePo);

    List<NoticeVo>  getNoticeSort();

    /**
     * 置顶全部改为否
     * @return
     */
    Boolean serAllIsTopToNo();

    /*----------------------前台------------------------------*/

    /**
     * 查询属于自己 但不是 推送给所有人的通知公告 -集合
     *
     * @return
     */
    List<NoticeVo> findBelongAndNotAllNoticeList(NoticeBo noticeBo);

    /**
     * 查询属于自己 但不是 推送给所有人的通知公告 -条数
     *
     * @return
     */
    long findBelongAndNotAllNoticeCount(NoticeBo noticeBo);


    NoticePo findNoticeById(Integer noticeId);

    /**
     * 修改已读列表
     *
     * @param noticePo
     * @return
     */
    Boolean updateReadUser(NoticePo noticePo);

    /**
     * 展示未通知公告读数量(我的消息-小红点)
     * @param noticeBo
     * @return
     */
    long getUnReadNoticeNum(NoticeBo noticeBo);
    /**
     * 展示系统公告 实体- 目标所有为:是
     * @param noticeBo
     * @return
     */
    List<NoticeVo> findSystemNoticeList(NoticeBo noticeBo);


    /**
     * 展示系统公告 总条数- 目标所有为:是
     * @param noticeBo
     * @return
     */
    long findSystemNoticeCount(NoticeBo noticeBo);

    /**
     * 展示五条最新的系统公告- 目标所有为:是
     * @return
     */
    List<NoticeVo> showSystemNoticeLimitFive();

    /**
     * 根据ID 获取系统公告
     * @return
     */
    NoticeVo  findSystemNoticeById(Integer noticeId);

}
